#ifndef ICONTROLADOR_USUARIO_H
#define ICONTROLADOR_USUARIO_H

#include <string>
#include <set>
#include "types/DateTime.h"
#include "models/Usuario.h"
#include "interfaces/IControladorRecurso.h"

using namespace std;

class IControladorUsuario { // Interface

	public:
	        virtual bool ingresarNickName(string nickName) = 0;
	        virtual void ingresarDatosUsuario(string sexo, DateTime fechaNacimiento) = 0;
			virtual bool cancelarAltaUsuario() = 0;
			virtual void verInformacionUsuario() = 0;
			virtual void elegirUsuarioSistema(string nickName) = 0;
			virtual bool elegirAutorModificacionArchivo(string modificador) = 0;
			virtual bool elegirUsuarioColaborador(IControladorRecurso * iCR, string nickName) = 0;
			virtual void encontrarUsuario(string nickName) = 0;
			virtual bool registrarUsuarioColaborador(string nickName) = 0;
			virtual bool registrarUsuarioColaboradorRaiz(IControladorRecurso * iCR, string nickName) = 0;
			virtual void elegirUsuario(string nickName) = 0;
			virtual void imprimirInfoRecursos() = 0;
			virtual void imprimirUsuariosSistema() = 0;
			virtual void notificarUsuarios(IControladorRecurso * iCR, string accion) = 0;
			virtual bool permisosModificacion(string modificador, string nombre, string ubicacion) = 0;
			virtual void imprimirNicknamesUsuarios() = 0;
			virtual void esUsuarioDelSistema(string nickName) = 0;
			virtual Usuario* obtenerUsuarioDelSistema(string nickName) = 0;
			virtual bool esColaborador(string nickName) = 0;
			virtual void noHayUsuarios() = 0;
			virtual ~IControladorUsuario(){};

};

#endif
